'use strict';
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const htmlWebpackPlugin = require('html-webpack-plugin');
const version = "v1.1.1";

//提取公共模块的依赖
const webpack = require('webpack');

//压缩混淆
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');


module.exports = {

    //入口
    entry: {
        main: './src/main.js',
        vendors:['vue','vue-router','moment','axios','vue-preview'] //多入口处理第三方包,将其加入(CommonsChunkPlugin)公共模块中
    },
    output: {
        //所有产出资源路径
        path: path.join(__dirname, 'dist_css'),
        //filename: '[chunkhash].js' //使用hash值,每次打包都是唯一标识文件名,避免浏览器缓存
        //filename: '[name].[chunkhash:6].js' //加上name hash值保留6位数
        filename: 'js/[name].[chunkhash:6].js', //相对路径将会在dist_css目录下生成js目录文件
        //设置资源路径的请求地址
        //style.css -> /css/    assets/mui.ttf
        //load的时候配置的name属性 assets/mui.ttf
        pulicpath:'/' //企业中也可以是网址(www.baidu.com/)开头的目录
    },
    module: {
        loaders: [{
                test: /\.css$/,
                // loader: 'style-loader!css-loader!autoprefixer-loader'
                //打包css
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: "css-loader!autoprefixer-loader!"
                  })
            },
            {
                test: /\.less$/,
                loader: 'style-loader!css-loader!autoprefixer-loader!less-loader'
            },
            {
                test: /\.(jpg|png|svg|ttf|woff|woff2|gif)$/,
                loader: 'url-loader',
                options: {
                    limit: 4096, //4096字节以上生成文件，否则base6
                    //name: '[name].[ext]',
                    name: 'assets/[name].[ext]' //相对路径将所有资源放到指定的assets目录下
                }
            },
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                //如果多次需要使用babel-loader,就需要多次使用options,建议使用.babelrc文件在当前根目录就可以了
                options: {
                    presets: ['es2015'], //关键字
                    plugins: ['transform-runtime'], //函数
                }
            },
            {
                //解析vue-pre-view的es6代码
                //如果多次需要使用babel-loader,就需要多次使用options,建议使用.babelrc文件在当前根目录就可以了                
                test:/\vue-preview.src.*?js$/,
                loader:'babel-loader',
                options: {
                    presets: ['es2015'], //关键字
                    plugins: ['transform-runtime'], //函数
                }
            },
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            }
        ]
    },
    plugins: [
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify('production')
          }),
        new UglifyJsPlugin(),  //压缩混淆代码
        new webpack.optimize.CommonsChunkPlugin({
           
            names:['vendors','manifest'] //manifest清单 用来记录使用者和第三方包的依赖关系
        }),
        //提取css插件,设置名称
        //new ExtractTextPlugin("[name].[contenthash:6].css"), //使用hash值,每次打包都是唯一标识文件名,避免浏览器缓存
        new ExtractTextPlugin("css/[name].[contenthash:6].css"),//相对路径指定到css目录下
        new htmlWebpackPlugin({
            template: './src/index.html'
        }),
    ]
}